package com.fucking.great.context.single;

import cn.hutool.core.util.ReflectUtil;
import com.fucking.great.context.config.JetcacheTxnConfigerDecorator;
import com.fucking.great.context.config.TxnConfiger;
import com.fucking.great.context.constant.EnvConstant;

import java.util.HashMap;
import java.util.Map;

/**
 * 建议使用这个类，分debug和service2个环境去实例化对象。
 * @see GreatSingleFactory#newInstanse
 */
public class CahceSingleFactory extends GreatSingleFactory {
    @Override
    public Map<String,Object> getNeedRegsigAllBean(Map<String,Object> storageCenter) {

        //
        Map<String, Object> map = new HashMap<>();
        // 先移除.
        storageCenter.remove(TxnConfiger.class);
        // 获得基础类。
        TxnConfiger concreteComponent = ReflectUtil.newInstance(EnvConstant.CONCRETE_TXNCONFIGER_CLASS_NAME);
        // 以下都是如果存在,则不往里面放了。
        // txnConfiger
        this.newInstanse(TxnConfiger.class,storageCenter,map,
                () ->  new JetcacheTxnConfigerDecorator(concreteComponent) ,
                () ->  concreteComponent );
        //
        return map;
    }


}
